package com.nanyang.tms.api.service.saleproduct;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.saleproduct.SaleProductQueryRequest;
import com.nanyang.tms.api.dto.request.saleproduct.SaleProductUpdateStateRequest;
import com.nanyang.tms.api.dto.request.saleproduct.add.SaleProductBaseAddRequest;
import com.nanyang.tms.api.dto.request.saleproduct.update.SaleProductBaseUpdateRequest;
import com.nanyang.tms.api.dto.response.saleproduct.SaleProductBaseResponse;
import com.nanyang.tms.api.dto.response.saleproduct.SaleProductPageKeyResponse;
import com.nanyang.tms.api.dto.response.saleproduct.SaleProductPageResponse;

public interface SaleProductRpcService {
    /**
     * 列表
     * @param param
     * @return
     */
    ApiResult<PageBean<SaleProductPageResponse>> listSaleProduct(SaleProductQueryRequest param);
    /**
     * 模糊列表
     * @param param
     * @return
     */
    ApiResult<PageBean<SaleProductPageKeyResponse>> listSaleProductByKey(SaleProductQueryRequest param);
    /**
     *
     * <p>getSaleProductById</p>
     * <p>Description:(根据code获取服务产品详情)</p>
     *
     * @param code
     * @return
     */
    ApiResult<SaleProductBaseResponse> selectByCode(String code);

    /**
     *
     * <p>saveSaleProduct</p>
     * <p>Description:(保存服务产品)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> saveSaleProduct(SaleProductBaseAddRequest param);

    /**
     *
     * <p>updateSaleProduct</p>
     * <p>Description:(修改服务产品)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> updateSaleProduct(SaleProductBaseUpdateRequest param);

    /**
     *
     * <p>updateSaleProduct</p>
     * <p>Description:(禁用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> disableState(SaleProductUpdateStateRequest param);
    /**
     *
     * <p>updateSaleProduct</p>
     * <p>Description:(启用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> enableState(SaleProductUpdateStateRequest param);
}
